Entity Framework Core (EF Core) হলো Microsoft-এর তৈরি একটি Object Relational Mapper (ORM), যা ডেভেলপারদের ডেটাবেসের সঙ্গে ইন্টারঅ্যাক্ট করার জন্য একটি উচ্চ-স্তরের অ্যাবস্ট্রাকশন সরবরাহ করে। এটি .NET Core এবং .NET Framework-এ সমর্থিত এবং ডেটাবেস অপারেশনগুলিকে সহজ, দ্রুত এবং কার্যকর করে তোলে।
EF Core ডেভেলপারদের ডেটাবেসে সরাসরি SQL কোড লিখা ছাড়াই ডেটা পরিচালনা করতে দেয় এবং Code First এবং Database First পদ্ধতি সমর্থন করে।
EF Core ব্যবহার করার জন্য আপনাকে প্রয়োজনীয় NuGet প্যাকেজ ইন্সটল করতে হবে।
SQL Server ব্যবহার করার জন্য:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Tools প্যাকেজ ইন্সটল:
dotnet add package Microsoft.EntityFrameworkCore.Tools
SQLite ব্যবহার করার জন্য (ঐচ্ছিক):
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
DbContext হলো EF Core-এর কেন্দ্রীয় কম্পোনেন্ট, যা ডেটাবেস এবং ডেটা মডেলের মধ্যে যোগাযোগ করে। এটি আপনার ডেটাবেস কনফিগারেশন এবং CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করে।
Model হলো ডেটাবেস টেবিলের প্রতিনিধিত্বকারী ক্লাস। প্রতিটি প্রপার্টি ডেটাবেস কলামের সাথে সংযুক্ত।
EF Core LINQ ব্যবহার করে ডেটাবেসের উপর কুয়েরি চালায়, যা ডেভেলপারদের SQL-এর পরিবর্তে C# কোড দিয়ে ডেটা রিট্রিভ করতে দেয়।
Code First পদ্ধতিতে ডেভেলপার প্রথমে মডেল ক্লাস তৈরি করে এবং তারপরে ডেটাবেস তৈরি করে।
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Your_Connection_String");
}
}
dotnet ef migrations add InitialCreate
dotnet ef database update
Database First পদ্ধতিতে বিদ্যমান ডেটাবেস থেকে মডেল তৈরি করা হয়।
EF Core Tools দিয়ে বিদ্যমান ডেটাবেস থেকে মডেল ক্লাস জেনারেট করতে নিচের কমান্ড ব্যবহার করুন:
dotnet ef dbcontext scaffold "Your_Connection_String" Microsoft.EntityFrameworkCore.SqlServer
using (var context = new AppDbContext())
{
var product = new Product { Name = "Laptop", Price = 800.00M };
context.Products.Add(product);
context.SaveChanges();
}
using (var context = new AppDbContext())
{
var products = context.Products.ToList();
foreach (var product in products)
{
Console.WriteLine($"Name: {product.Name}, Price: {product.Price}");
}
}
using (var context = new AppDbContext())
{
var product = context.Products.FirstOrDefault(p => p.Id == 1);
if (product != null)
{
product.Price = 750.00M;
context.SaveChanges();
}
}
using (var context = new AppDbContext())
{
var product = context.Products.FirstOrDefault(p => p.Id == 1);
if (product != null)
{
context.Products.Remove(product);
context.SaveChanges();
}
}
EF Core LINQ ব্যবহার করে ডেটা কুয়েরি করার জন্য একটি শক্তিশালী টুল প্রদান করে:
var expensiveProducts = context.Products.Where(p => p.Price > 500).ToList();
var sortedProducts = context.Products.OrderBy(p => p.Name).ToList();
var productNames = context.Products.Select(p => p.Name).ToList();
EF Core মাইগ্রেশন ডেটাবেসের স্কিমা পরিবর্তন করার জন্য একটি শক্তিশালী পদ্ধতি প্রদান করে।
dotnet ef migrations add AddCategoryColumn
dotnet ef database update
dotnet ef database update PreviousMigrationName
EF Core একটি শক্তিশালী ORM টুল যা ডেভেলপারদের ডেটাবেসের সাথে কাজ করা সহজ করে তোলে। এর Code First এবং Database First পদ্ধতি ডেভেলপারদের তাদের চাহিদা অনুযায়ী ডেটাবেস পরিচালনা করতে দেয়। LINQ সমর্থন এবং মাইগ্রেশন সিস্টেম এটিকে আরও কার্যকর এবং ডেভেলপমেন্ট ফ্রেন্ডলি করে তুলেছে।
Entity Framework Core (EF Core) হলো .NET Core-এর জন্য একটি ওপেন সোর্স ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক, যা ডেটাবেসে অবজেক্ট এবং ডেটা টেবিলের মধ্যে সম্পর্ক তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। EF Core ডেটাবেস পরিচালনা সহজ এবং কার্যকরী করে, এবং ডেভেলপারদের SQL কোড লেখার পরিবর্তে C# কোড ব্যবহার করে ডেটাবেস অপারেশন করতে সহায়তা করে।
EF Core আপনাকে ডেটাবেসের সাথে যোগাযোগ করতে LINQ (Language Integrated Query) ব্যবহার করে ডেটা কুয়েরি করতে দেয় এবং এতে Code First এবং Database First দুটি অ্যাপ্রোচ ব্যবহারের সুবিধা রয়েছে।
EF Core ডেটাবেসের সাথে যোগাযোগ করতে DbContext এবং DbSet ক্লাস ব্যবহার করে। DbContext হলো EF Core-এর প্রধান ক্লাস, যা ডেটাবেসের টেবিলগুলির সাথে যোগাযোগ স্থাপন করে এবং DbSet হলো একটি ডেটাবেস টেবিলের প্রতিনিধিত্বকারী কনটেইনার ক্লাস।
DbContext হলো EF Core-এর মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করা ক্লাস। এটি ডেটাবেসের টেবিলগুলোর সাথে সম্পর্কযুক্ত ক্লাসগুলির ডেটাকে ম্যানেজ করে।
DbSet হলো ডেটাবেসের টেবিলের প্রতিনিধিত্বকারী ক্লাস, যেখানে আপনি ডেটার CRUD (Create, Read, Update, Delete) অপারেশন করতে পারেন।
EF Core সেটআপ করার জন্য আপনাকে প্রথমে NuGet প্যাকেজ ইনস্টল করতে হবে এবং কিছু কনফিগারেশন করতে হবে।
EF Core ব্যবহারের জন্য আপনাকে আপনার ASP.NET Core প্রজেক্টে EF Core প্যাকেজ ইনস্টল করতে হবে। আপনি NuGet Package Manager বা Command Line ব্যবহার করে এই প্যাকেজ ইনস্টল করতে পারেন।
Command Line ব্যবহার করে EF Core ইনস্টল করা:
ডটনেট ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ডাটাবেস প্রোভাইডারের প্যাকেজ ইনস্টল করতে হবে, যেমন SQL Server:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
ডেটাবেস মাইগ্রেশন পরিচালনার জন্য Tools প্যাকেজ ইনস্টল করতে হবে:
dotnet add package Microsoft.EntityFrameworkCore.Tools
EF Core ব্যবহারের জন্য প্রথমে একটি DbContext ক্লাস তৈরি করতে হবে, যা ডেটাবেসের টেবিলগুলোর সাথে সম্পর্ক স্থাপন করবে।
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
এখানে, Products
হলো ডেটাবেসের টেবিলের প্রতিনিধিত্বকারী একটি DbSet
যা Product
ক্লাসের উপর ভিত্তি করে তৈরি হয়েছে।
ডেটাবেসের টেবিলের প্রতিনিধিত্ব করার জন্য একটি মডেল ক্লাস তৈরি করতে হবে। উদাহরণস্বরূপ, Product
ক্লাস:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
এখানে, Product
ক্লাস একটি টেবিলের প্রতিনিধিত্ব করছে, যেখানে Id
, Name
, এবং Price
হলো টেবিলের কলাম।
এখন DbContext ক্লাসটি কনফিগার করতে হবে, যা Startup.cs
ফাইলে করা হয়।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে, UseSqlServer
মেথডের মাধ্যমে SQL Server ব্যবহার করা হয়েছে এবং কনফিগারেশন ফাইলে থাকা DefaultConnection কনেকশন স্ট্রিং ব্যবহার করা হয়েছে।
ডেটাবেসের স্কিমা তৈরি করতে Entity Framework Core মাইগ্রেশন ব্যবহার করতে হবে। এটি ডেটাবেসের কাঠামো পরিবর্তন করতে সহায়ক।
প্রথমে মাইগ্রেশন তৈরি করুন:
dotnet ef migrations add InitialCreate
তারপর ডেটাবেস আপডেট করুন:
dotnet ef database update
এটি ডেটাবেসের স্কিমা তৈরি করবে এবং প্রথম মাইগ্রেশন চালাবে।
EF Core দিয়ে ডেটাবেসে CRUD অপারেশন করতে DbContext এবং DbSet ব্যবহার করা হয়। উদাহরণস্বরূপ, নতুন Product
তৈরি করা:
using (var context = new ApplicationDbContext())
{
var product = new Product
{
Name = "Laptop",
Price = 1000
};
context.Products.Add(product);
context.SaveChanges();
}
এখানে, Add
মেথডের মাধ্যমে একটি নতুন Product
ডেটাবেসে যোগ করা হয়েছে এবং SaveChanges()
মেথডের মাধ্যমে ডেটাবেসে পরিবর্তন সেভ করা হয়েছে।
EF Core .NET Core অ্যাপ্লিকেশন ডেভেলপমেন্টে ডেটাবেস অপারেশন এবং ম্যানেজমেন্টের জন্য অত্যন্ত গুরুত্বপূর্ণ একটি টুল। এটি ডেভেলপারদের জন্য ডেটাবেস ম্যানেজমেন্ট সহজ এবং কার্যকরী করে তোলে।
ASP.NET Core এ ডেটাবেস ইন্টিগ্রেশন করার জন্য দুইটি প্রধান পদ্ধতি ব্যবহৃত হয়: Code First এবং Database First। এই দুটি পদ্ধতির মূল পার্থক্য হলো ডেটাবেস ডিজাইন এবং মডেল ক্লাসের মধ্যে সম্পর্ক কীভাবে তৈরি করা হবে তা নিয়ে। নিচে এই দুটি পদ্ধতির বিস্তারিত বর্ণনা দেওয়া হলো।
Code First পদ্ধতিতে, ডেটাবেস মডেল প্রথমে কোডে লেখা হয়। অর্থাৎ, আপনি প্রথমে ক্লাস তৈরি করেন এবং সেগুলোকে ডেটাবেস টেবিলের সাথে ম্যাপ করেন। এরপর EF Core (Entity Framework Core) এর মাধ্যমে ডেটাবেস তৈরি করা হয়।
ধরা যাক, আপনি একটি Product
ক্লাস তৈরি করতে চান যা ডেটাবেসে একটি Products
টেবিলের জন্য ব্যবহৃত হবে।
Model Class (Product.cs):
public class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
DbContext Class (ApplicationDbContext.cs):
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
}
এখন, migrations এর মাধ্যমে ডেটাবেস তৈরি করতে পারবেন:
dotnet ef migrations add InitialCreate
dotnet ef database update
এভাবে Code First পদ্ধতিতে ডেটাবেস তৈরি করা হয়।
Database First পদ্ধতিতে, ডেটাবেস প্রথমে তৈরি করা হয় এবং তারপর ডেটাবেসের কাঠামো অনুযায়ী C# ক্লাস (Model) তৈরি করা হয়। এতে, ডেটাবেসের উপস্থিতির উপর ভিত্তি করে কোড জেনারেট করা হয়।
ধরা যাক, আপনি একটি ডেটাবেস তৈরি করেছেন এবং সেটির সাথে মডেল ক্লাস জেনারেট করতে চান। ডেটাবেসের টেবিলগুলি থেকে ক্লাস জেনারেট করতে EF Core Scaffold ব্যবহার করা হয়।
ডেটাবেস থেকে ক্লাস জেনারেট করার জন্য কমান্ড:
dotnet ef dbcontext scaffold "ConnectionString" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models
এতে Products টেবিলের জন্য Product
ক্লাস তৈরি হয়ে যাবে। DbContext
ক্লাসও তৈরি হবে, যেটি ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করবে।
বৈশিষ্ট্য | Code First | Database First |
---|---|---|
ডেটাবেসের শুরু | কোডের মাধ্যমে ডেটাবেস তৈরি করা হয়। | ডেটাবেস আগে থেকেই তৈরি থাকে। |
ডেটাবেস ডিজাইন | কোডে মডেল ক্লাস তৈরি করা হয়। | ডেটাবেসের স্কিমা অনুযায়ী কোড তৈরি হয়। |
মাইগ্রেশন ব্যবহৃত হয় | মাইগ্রেশন ব্যবহার করে ডেটাবেস আপডেট করা হয়। | ডেটাবেস তৈরি হয়ে গেলে কোড জেনারেট করা হয়। |
ডেটাবেস টেবিল কাস্টমাইজেশন | কোডের মধ্যে টেবিল কাস্টমাইজ করা হয়। | ডেটাবেসের টেবিলের কাস্টমাইজেশন আগে থেকেই করা থাকে। |
ফ্লেক্সিবিলিটি | বেশি ফ্লেক্সিবিলিটি, ডেটাবেস এবং কোডের কাঠামো একত্রে কন্ট্রোল করা যায়। | কম ফ্লেক্সিবিলিটি, কারণ ডেটাবেস আগে থেকেই তৈরি থাকে। |
Code First এবং Database First উভয় পদ্ধতিই Entity Framework Core এর শক্তিশালী ফিচার, এবং আপনার প্রজেক্টের প্রয়োজন অনুযায়ী যে কোন পদ্ধতি ব্যবহার করা যেতে পারে।
ASP.NET Core-এ DbContext এবং Model ব্যবহার করে ডাটাবেসের সঙ্গে কাজ করা যায়। Entity Framework Core (EF Core) এর মাধ্যমে ডাটাবেস অ্যাক্সেসের জন্য এই দুইটি গুরুত্বপূর্ণ উপাদান ব্যবহৃত হয়। DbContext ডাটাবেসের সংযোগ পরিচালনা করে, এবং Model ডাটাবেস টেবিলের গঠন উপস্থাপন করে।
DbContext হলো Entity Framework Core এর একটি ক্লাস, যা ডাটাবেস সংযোগ এবং ডাটাবেসের সঙ্গে CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করার জন্য ব্যবহৃত হয়। এটি ডাটাবেস এবং অ্যাপ্লিকেশন লজিকের মধ্যে একটি ব্রিজ হিসেবে কাজ করে।
Model হলো ডোমেইন ক্লাস যা ডাটাবেস টেবিলের কাঠামোকে উপস্থাপন করে। প্রতিটি Model ডাটাবেস টেবিলের একটি রেকর্ড বা এনটিটির প্রতিনিধিত্ব করে।
প্রথমে, Entity Framework Core এবং ডাটাবেস প্রোভাইডারের জন্য প্রয়োজনীয় NuGet প্যাকেজ ইনস্টল করুন। উদাহরণস্বরূপ, যদি SQL Server ব্যবহার করেন:
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Model ক্লাস হলো একটি সাধারণ C# ক্লাস যা ডাটাবেস টেবিলের কলামগুলোর প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, একটি Student টেবিলের জন্য Model হতে পারে:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
DbContext একটি কাস্টম ক্লাস, যা Entity Framework Core এর DbContext
ক্লাস থেকে ইনহেরিট করে। এতে ডাটাবেসের টেবিল বা এনটিটির জন্য DbSet প্রপার্টি থাকে।
using Microsoft.EntityFrameworkCore;
public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions<SchoolContext> options) : base(options) { }
public DbSet<Student> Students { get; set; }
}
বিশ্লেষণ:
DbContextOptions<SchoolContext>
DbContext কনফিগারেশন পরিচালনা করে।DbSet<Student>
Students
টেবিলের প্রতিনিধিত্ব করে, যার মাধ্যমে ডাটাবেসে CRUD অপারেশন সম্পন্ন করা যাবে।Program.cs
ফাইলে DbContext কনফিগার করতে হবে, যেখানে ডাটাবেস কানেকশন স্ট্রিং উল্লেখ করা হবে।
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddDbContext<SchoolContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
appsettings.json ফাইলে ডাটাবেসের কানেকশন স্ট্রিং যোগ করুন:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=SchoolDB;Trusted_Connection=True;"
}
}
DbContext এর মাধ্যমে ডাটাবেসে নতুন ডেটা যোগ করা যায়:
using (var context = new SchoolContext(options))
{
var student = new Student { Name = "John Doe", Age = 20 };
context.Students.Add(student);
context.SaveChanges();
}
DbContext এর মাধ্যমে ডাটাবেস থেকে ডেটা পড়া যায়:
using (var context = new SchoolContext(options))
{
var students = context.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"{student.Name} - {student.Age}");
}
}
DbSet
ব্যবহার করে Model এর মাধ্যমে ডাটাবেস টেবিল অ্যাক্সেস করা হয়।DbContext এবং Model ASP.NET Core অ্যাপ্লিকেশনের ডাটাবেস ইন্টিগ্রেশনের একটি শক্তিশালী এবং কার্যকরী মাধ্যম। এটি ডেভেলপারদের ডাটাবেস অপারেশন সহজ এবং মডিউলার করার সুযোগ দেয়।
CRUD (Create, Read, Update, Delete) হলো ডেটাবেজ অপারেশন পরিচালনার একটি মৌলিক পদ্ধতি, যা অধিকাংশ অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। ASP.NET Core-এ, CRUD অপারেশনগুলি সাধারণত Entity Framework Core (EF Core) ব্যবহার করে করা হয়, যা একটি Object-Relational Mapping (ORM) টুল এবং ডেটাবেজের সাথে কাজ করার জন্য খুবই শক্তিশালী।
CRUD অপারেশনগুলোর মাধ্যমে ব্যবহারকারীদের ইনপুট গ্রহণ, ডেটা প্রদর্শন, ডেটা আপডেট করা এবং ডেটা মুছে ফেলা যায়। ASP.NET Core অ্যাপ্লিকেশনে এই অপারেশনগুলো করতে Entity Framework Core ব্যবহৃত হয়।
Create অপারেশন ডেটাবেজে নতুন রেকর্ড যোগ করার জন্য ব্যবহৃত হয়। ASP.NET Core-এ এটি সাধারণত POST রিকোয়েস্টের মাধ্যমে করা হয়, যেখানে ডেটা ফর্মের মাধ্যমে সার্ভারে পাঠানো হয়।
এখানে একটি Product নামক মডেল তৈরি করা হলো এবং একটি নতুন প্রোডাক্ট ডেটাবেজে অ্যাড করার জন্য Create
মেথড ব্যবহার করা হয়েছে।
Product.cs
মডেলpublic class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
ProductsController.cs
public class ProductsController : Controller
{
private readonly ApplicationDbContext _context;
public ProductsController(ApplicationDbContext context)
{
_context = context;
}
// GET: Products/Create
public IActionResult Create()
{
return View();
}
// POST: Products/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,Price")] Product product)
{
if (ModelState.IsValid)
{
_context.Add(product);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(product);
}
}
এখানে Create
মেথডটি ব্যবহারকারী থেকে ইনপুট নিয়ে সেই ইনপুটকে ডেটাবেজে সেভ করবে।
Read অপারেশন ডেটাবেজ থেকে ডেটা পড়তে ব্যবহৃত হয়। এটি সাধারণত GET রিকোয়েস্টের মাধ্যমে করা হয়, যেখানে ডেটা ডেটাবেজ থেকে অ্যাক্সেস করা হয় এবং ব্যবহারকারীকে দেখানো হয়।
এখানে আমরা Product মডেল থেকে ডেটা পড়ছি এবং অ্যাকশন রিটার্ন করছি যাতে সেই ডেটা ভিউতে প্রদর্শিত হয়।
ProductsController.cs
// GET: Products
public async Task<IActionResult> Index()
{
return View(await _context.Products.ToListAsync());
}
এই মেথডটি সমস্ত Product গুলি ডেটাবেজ থেকে পড়বে এবং ভিউতে প্রদর্শন করবে।
Index.cshtml
(View)@foreach (var product in Model)
{
<div>
<h3>@product.Name</h3>
<p>@product.Price</p>
</div>
}
Update অপারেশন ডেটাবেজে একটি বিদ্যমান রেকর্ড আপডেট করতে ব্যবহৃত হয়। এটি PUT বা PATCH রিকোয়েস্টের মাধ্যমে করা হয় এবং ডেটাবেজে থাকা একটি রেকর্ডের তথ্য পরিবর্তন করে।
এখানে একটি প্রোডাক্ট আপডেট করার উদাহরণ দেওয়া হল।
ProductsController.cs
// GET: Products/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products.FindAsync(id);
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Products/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Price")] Product product)
{
if (id != product.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(product);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ProductExists(product.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(product);
}
এখানে Edit
মেথডটি নির্দিষ্ট Product-এর তথ্য লোড করে এবং সেই তথ্য আপডেট করার জন্য ডেটাবেজে পাঠায়।
Delete অপারেশন ডেটাবেজ থেকে একটি রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়। এটি DELETE রিকোয়েস্টের মাধ্যমে করা হয় এবং ডেটাবেজ থেকে একটি রেকর্ড স্থায়ীভাবে মুছে ফেলে।
এখানে একটি প্রোডাক্ট ডিলিট করার উদাহরণ দেওয়া হলো।
ProductsController.cs
// GET: Products/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products
.FirstOrDefaultAsync(m => m.Id == id);
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Products/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var product = await _context.Products.FindAsync(id);
_context.Products.Remove(product);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
এখানে DeleteConfirmed মেথডটি প্রোডাক্টটি ডেটাবেজ থেকে মুছে ফেলে।
CRUD অপারেশন (Create, Read, Update, Delete) হলো ডেটাবেজের মূল কার্যকলাপ এবং এটি যেকোনো ডেটা-চালিত অ্যাপ্লিকেশনে ব্যবহৃত হয়। ASP.NET Core-এ Entity Framework Core (EF Core) ব্যবহার করে এই অপারেশনগুলো সহজেই করা যায়। এর মাধ্যমে আপনি নতুন ডেটা তৈরি, ডেটা পড়া, ডেটা আপডেট এবং ডেটা মুছে ফেলার মতো কাজগুলি খুব সহজে করতে পারবেন।
LINQ (Language Integrated Query) হলো .NET এর একটি শক্তিশালী ফিচার, যা ডেটা সোর্সের উপর কুয়েরি চালানোর জন্য ব্যবহার করা হয়। LINQ ব্যবহার করে SQL ডেটাবেস, XML ডকুমেন্ট, কালেকশন (Lists, Arrays), এবং আরও বিভিন্ন ধরনের ডেটা কুয়েরি করা যায়। এটি ডেভেলপারদের জন্য সহজ এবং রিডেবল কুয়েরি লেখার সুযোগ দেয়, যা টাইপ-সেফ এবং কম্পাইল টাইমে যাচাইযোগ্য।
LINQ সাধারণত দুইভাবে লেখা যায়:
.Where()
, .Select()
, .OrderBy()
) ব্যবহার করে কুয়েরি লেখা।List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from number in numbers
where number % 2 == 0
select number;
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
var evenNumbers = numbers.Where(number => number % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 800 },
new Product { Id = 2, Name = "Mouse", Price = 20 },
new Product { Id = 3, Name = "Keyboard", Price = 30 },
new Product { Id = 4, Name = "Monitor", Price = 150 }
};
var expensiveProducts = from product in products
where product.Price > 100
select product;
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
var expensiveProducts = products.Where(p => p.Price > 100);
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
Where()
ব্যবহার করা হয়।var filteredProducts = products.Where(p => p.Price > 50);
OrderBy()
এবং OrderByDescending()
ব্যবহার করা হয়।var sortedProducts = products.OrderBy(p => p.Price); // Ascending
var sortedProductsDesc = products.OrderByDescending(p => p.Price); // Descending
Select()
ব্যবহার করা হয়।var productNames = products.Select(p => p.Name);
foreach (var name in productNames)
{
Console.WriteLine(name);
}
Sum()
, Average()
, Count()
ব্যবহার করা হয়।var totalPrice = products.Sum(p => p.Price); // Total Price
var averagePrice = products.Average(p => p.Price); // Average Price
var productCount = products.Count(); // Total Count
GroupBy()
ব্যবহার করা হয়।var groupedProducts = products.GroupBy(p => p.Price > 100 ? "Expensive" : "Affordable");
foreach (var group in groupedProducts)
{
Console.WriteLine($"{group.Key} Products:");
foreach (var product in group)
{
Console.WriteLine($" - {product.Name}");
}
}
Join()
ব্যবহার করা হয়।List<Category> categories = new List<Category>
{
new Category { Id = 1, Name = "Electronics" },
new Category { Id = 2, Name = "Accessories" }
};
var productCategories = products.Join(categories,
product => product.Id,
category => category.Id,
(product, category) => new
{
ProductName = product.Name,
CategoryName = category.Name
});
foreach (var item in productCategories)
{
Console.WriteLine($"{item.ProductName} belongs to {item.CategoryName} category.");
}
LINQ শুধুমাত্র ইন-মেমোরি ডেটা কুয়েরি করার জন্য নয়, এটি Entity Framework Core এর সঙ্গে ডেটাবেস কুয়েরির জন্যও ব্যবহৃত হয়।
var expensiveProducts = context.Products
.Where(p => p.Price > 100)
.OrderBy(p => p.Name)
.ToList();
foreach (var product in expensiveProducts)
{
Console.WriteLine($"{product.Name}: ${product.Price}");
}
LINQ ডেটা কুয়েরি করার একটি শক্তিশালী এবং কার্যকর পদ্ধতি, যা ডেভেলপারদের প্রোডাক্টিভিটি বাড়াতে সহায়তা করে। এটি ইন-মেমোরি ডেটা এবং ডেটাবেস উভয়ের সঙ্গেই কাজ করতে পারে।
common.read_more